package com.dayuanit.dy14.rpc.client.demo.net;

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class Client {

    public static Object callRemoteMethod(String className, String methodName, Class[] paramClass, Object[] paramObject) throws Exception{
        Socket socket = new Socket("127.0.0.1", 10001);

        //我们要向服务提供者发送什么消息呢？
        //我们发送消息的目的是干么呢？

        //我们就是要调用服务提供者的PayServiceImpl类的pay(String)方法。

        //要告诉服务提供者4个信息
        //1.类的全名称
        //2.方法名
        //3.方法入参类型
        //4.方法的实际入参对象

        ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
        oos.writeUTF(className);
        oos.writeUTF(methodName);
        oos.writeObject(paramClass);
        oos.writeObject(paramObject);

        oos.flush();

        ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
        return ois.readObject();
    }
}
